1490A - Dense Array - CodeForces Solution


greedy math *800

Please click on ads to support us..

Python Code:

for _ in range(int(input())):
    n=int(input())
    a=[int(x) for x in input().split()]
    cnt=0
    flag=0
    for i in range(n-1):
        if(((max(a[i],a[i+1])/min(a[i],a[i+1])))>2):
            flag+=1
            maxi=max(a[i],a[i+1])
            mini=min(a[i],a[i+1])
            while(maxi>mini):
                cnt+=1
                mini*=2
    print(cnt-flag)

C++ Code:

#include <iostream>
int main(){
    int t,n,p,c,a;
    std::cin>>t;
    
    while(t--){
        std::cin>>n>>p;
        a=0;
        while(--n){
            std::cin>>c;
            if(c-p) a+=31-__builtin_clz((p+c-1)/(p>c?c:p)-1);
            p=c;
            
        }
            std::cout<<a<<'\n';
        
    }}


Comments

Submit
0 Comments
More Questions

1517D - Explorer Space
1230B - Ania and Minimizing
1201A - Important Exam
676A - Nicholas and Permutation
431A - Black Square
474B - Worms
987B - High School Become Human
1223A - CME
1658B - Marin and Anti-coprime Permutation
14B - Young Photographer
143A - Help Vasilisa the Wise 2
320A - Magic Numbers
1658A - Marin and Photoshoot
514A - Chewbaсca and Number
382A - Ksenia and Pan Scales
734B - Anton and Digits
1080A - Petya and Origami
1642D - Repetitions Decoding
1440A - Buy the String
1658F - Juju and Binary String
478A - Initial Bet
981A - Antipalindrome
365A - Good Number
1204B - Mislove Has Lost an Array
1409D - Decrease the Sum of Digits
1476E - Pattern Matching
1107A - Digits Sequence Dividing
1348A - Phoenix and Balance
1343B - Balanced Array
1186A - Vus the Cossack and a Contest